package com.navinfo.platform.trip.common.pojo;

import com.navinfo.platform.trip.common.enums.ProtocolEnum;
import lombok.Data;

/**
 * 公共轨迹协议对象，所有车厂的全量字段
 */
@Data
public class PointProtocol implements Point {
    /**
     * tid,（公共）
     */
    private long tid;
    /**
     * tripId,行程ID（公共）
     */
    private int tripId;
    /**
     *  协议类型：1，密集；2，位置（公共）
     */
    private ProtocolEnum protocol;

    /**
     * gps时间，单位毫秒（公共）
     */
    private long gpsTime;
    /**
     * 车速,单位km/h，(公共)
     */
    private double speedKmh;
    /**
     * 原始纬度（84坐标系） ，单位：以度为单位乘以10的6次方(公共)
     */
    private int originalLat;
    /**
     * 原始经度（84坐标系） ，单位：以度为单位乘以10的6次方(公共)
     */
    private int originalLng;
    /**
     * 纬度，单位度，扩展10的6次方(公共)
     */
    private int latitude;
    /**
     * 经度，单位度，扩展10的6次方(公共)
     */
    private int longitude;
    /**
     * 方向(0~359)正北为0，顺时针(公共)
     */
    private int direction;
    /**
     * 高程，海拔高度，单位m (公共)
     */
    private double height;
    /**
     * 发动机转速，单位rpm转每分钟，(公共)
     */
    private int rotation;
    /**
     * 油门开度百分比，单位%，(公共)
     */
    private int accPedalPos;
    /**
     * 离合开关状态，0关，1开(公共)
     */
    private int clutchSwitch;
    /**
     * 发动机输出扭矩，单位%，(公共)
     */
    private int engineOutputTorque;
    /**
     * 发动机燃油消耗率，单位L/H (公共)
     */
    private double fuelConsumptionRate;
    /**
     * 发动机瞬时油耗，单位KM/L (公共)
     */
    private double realTimeOilConsumption;


    /* **********************************
     *  密集点0F37特有属性，
     *  状态类字段为基础类型，无值为0
     *  数值类字段为包装类型，无值为null
     * **********************************/
    /**
     * 制动信号状态，0关，1开（0F37特有，无值为0）
     */
    private int brake;
    /**
     *  大气温度,单位：摄氏度（0F37特有，无值为null）
     */
    private Integer atmosphericTem;


    /* **********************************
    *  位置点0200特有属性，
    *  状态类字段为基础类型，无值为0
    *  数值类字段为包装类型，无值为null
    * **********************************/
    /**
     * 状态位<br/>
     * acc状态，0关，1开（0200特有）
     */
    private int accStatus;
    /**
     * 附加状态位<br/>
     * 定速巡航状态，0关，1开（0200特有）
     */
    private int cruiseControl;
    /**
     * 报警位<br/>
     * 弯道超速，0：不是，1：是(0200特有)
     */
    private int curveStatus;
    /**
     * 附加报警位<br/>
     * 手刹，0关，1开（0200特有）
     */
    private int handBrakeStatus;
    /**
     * 附加报警位<br/>
     * 空挡滑行，0:不是，1:空挡滑行（0200特有）
     */
    private int slideNeutralStatus;
    /**
     * 附加报警位<br/>
     * 急转弯，0：不是，1：急转弯（0200特有）
     */
    private int sharpTurningStatus;
    /**
     * 附加报警位<br/>
     * 猛踩油门，0：不是，1：猛踩油门（0200特有）
     */
    private int slamAcceleratorStatus;
    /**
     * 附加报警位<br/>
     *急加速，0：不是，1：急加速（0200特有）
     */
    private int rapidAccelerationStatus;
    /**
     * 附加报警位<br/>
     * 急减速，0：不是，1：急减速（0200特有）
     */
    private int rapidDecelerationStatus;

    /**
     * 附加状态位<br/>
     * 仪表里程，单位KM（0200特有，无值为null）
     */
    private Double meterMileage;
    /**
     * 附加状态位<br/>
     * can、ecu里程，单位KM（0200特有，无值为null）
     */
    private Double ecuMileage;
    /**
     * 附加状态位<br/>
     * 积分里程，单位KM（0200特有，无值为null）
     */
    private Double integralMileage;
    /**
     * 附加状态位<br/>
     * 积分油耗，单位L（0200特有，无值为null）
     */
    private Double integralFuelCons;
    /**
     * 附加状态位<br/>
     *燃油总消耗，单位L（0200特有，无值为null）
     */
    private Double totalFuelCons;
    /**
     * 附加状态位<br/>
     * 冷却水温，单位：摄氏度（0200特有，无值为null）
     */
    private Integer coolingWaterTem;
    /**
     * 附加状态位<br/>
     * 进气温度，单位：摄氏度（0200特有，无值为null）
     */
    private Integer intakeAirTem;
    /**
     * 附加状态位<br/>
     * 进气压力（0200特有，无值为null）
     */
    private Integer intakePressure;
    /**
     * 附加状态位<br/>
     * 油液百分比，（0200特有，无值为null）
     */
    private Double oilPercentage;
    /**
     * 附加状态位<br/>
     * 累计运行时长，单位s（0200特有，无值为null）
     */
    private Long cumulativeRunningTime;

    /**
     * GPS里程，单位KM（0200特有，无值为null）
     */
    private Double gpsMileage;
    /**
     * 标准里程，单位KM（0200特有，无值为null）
     * 仪表里程  > ecu里程 > gps里程 > 积分里程
     */
    private Float standardMileage;
    /**
     * 标准油耗，单位L（0200特有，无值为null）
     * 燃油总消耗 > 积分油耗
     */
    private Float standardFuelCons;
    /**
     * AMT载重,单位kg（0200特有，无值为null）
     */
    private Integer amtLoad;
    /**
     * VECU载重,单位kg（0200特有，无值为null）
     */
    private Integer vecuLoad;

    /**
     * 是否补传，0不是，1是（0200特有）
     */
    private int patch;
    /**
     * 流水号（0200特有,0F37为0）
     */
    private int serialNumber;
    /**
     * 数据清洗使用
     * 数据清洗修正值，默认为null，格式：col0=123|col1=234|....
     */
    private String dataUpd;

}
